package cn.wolfcode.wolf2w.common.redis.util;

import cn.wolfcode.wolf2w.common.core.constant.SystemConstants;
import lombok.Getter;
import lombok.Setter;

/**
 * Redis key 的管理类
 * 约定： 约定一个枚举实例映射一个redis key
 */
@Getter
public enum RedisKeys {

    //接口防刷  key 的实例
    BRUSH_PROOF("brush_proof", 60L),  //约定-1表示不设置失效时间
    // 用户点赞标记key  key 的实例
    STRATEGY_THUMB("strategy_thumb", -1L),  //约定-1表示不设置失效时间


    //用户攻略收藏  key 的实例
    USER_FAVOR("user_favor", -1L),  //约定-1表示不设置失效时间
    //攻略统计hash key 的实例
    STRATEGY_HASH("strategy_hash", -1L),  //约定-1表示不设置失效时间
    //用户注册验证码 key 的实例
    VERIFY_CODE("verify_code", SystemConstants.VERFIY_CODE_TIME * 60L);
    private RedisKeys(String prefix, Long time){
        this.prefix = prefix;
        this.time = time;
    }
    private String prefix;   //redis key前缀
    private Long time;      //redis key 失效时间： 单位秒
    //拼接处完整的redis key
    public String join(String...values){
        StringBuilder sb = new StringBuilder(80);
        sb.append(this.prefix);
        for (String value : values) {
            sb.append(":").append(value);
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        //verify_code:13700000000:xxx:yyy:zzz
        String key = RedisKeys.VERIFY_CODE.join("13700000000", "xxx", "yyy", "zzz");
        System.out.println(key);
    }
}
